Cryptographic hash functions are the workhorses of cryptography, and can be found everywhere. Originally created to make digital signatures more efficient, they are now used to secure the very fundamentals of our information infrastructure: in password logins, secure web connections, encryption key management, virus- and malware-scanning, and almost every cryptographic protocol in current use. Without hash functions, the Internet would simply not work. SKEIN algorithm is a leading contender for selection as the NIST choice for the new secure hashing standard designated as SHA3.
SKEIN is made up from three major functions: 1) MIX, 2) PERMUTE, and 3) sub-key addition. The MIX function utilizes three mathematical operations: 1) XOR, 2) rotate, and 3) propagate additions on a pair of 64-bit words, as shown in FIG. 1A. Referring to FIG. 1A, each MIX function adds two 64-bits inputs X0 and X1, producing the first 64 bits of the result (e.g., Y0), and an XOR of the addition result with a rotated version of the second input to produce the second 64 bits of the result (e.g., Y1). The MIX function is 128-bit wide and requires two MIX functions per round for SKEIN256, four MIX functions per round for SKEIN512, and eight MIX functions per round for SKEIN1024.
A round of the SKEIN algorithm is the MIX functions across 256, 512, or 1024 bits, followed by a PERMUTE of 64-bit words. FIG. 1B shows a table defining the permutes for SKEIN256 (e.g., Nw=4), SKEIN512 (e.g., Nw=8), and SKEIN1024 (e.g., Nw=16). There are 72 rounds of MIX/PERMUTE with a sub-key addition before the first round and then after every four rounds, as shown in FIG. 2. The rotation values or amounts for the MUX function repeat every eight rounds, as shown in FIG. 3. Further detailed information concerning the SKEIN hash function can be found in the article entitled “The Skein Hash Function Family,” published by Microsoft Corp. 2008.